<template>
  <!-- 放置一个图标 -->
  <div class="screenWrapper">
    <!-- <svg-icon
      icon-class="fullscreen"
      class="fullscreen"
      @click="toggleScreen"
    /> -->

    <!-- 根据全屏状态调整图标 -->
    <!-- 这个方法有一个bug，当用esc退出全屏时，图标不会改变 -->
    <svg-icon
      :icon-class="isFullScreen?'exit-fullscreen':'fullscreen'"
      class="fullscreen"
      @click="toggleScreen"
    />
  </div>
</template>

<script>
// 使用插件实现全屏功能
import screenfull from 'screenfull'
export default {
  name: 'ScreenFull',
  data() {
    return {
      isFullScreen: false
    }
  },
  // 监听屏幕的变化，根据屏幕变化，改变isFullScreen的值   解决esc的bug
  mounted() {
    // fullscreenchange  屏幕改变事件
  //   window.addEventListener('fullscreenchange', e => {
  //     // document.fullscreenElement  获取屏幕的全屏状态，如果是全屏，返回的是dom元素，如果不是则返回null
  //     const isFull = document.fullscreenElement
  //     // 如果是返回null   说明不是全屏状态   修改isFullScreen的值为false
  //     if (!isFull) {
  //       this.isFullScreen = false
  //     }
  //   })

    // 使用插件控制图标的切换
    // 这里有一个on方法 监控事件的触发 在事件触发的回调中让我们控制icon的状态和是否全屏保持一致
    screenfull.on('change', () => {
      //  screenfull.isFullscreen  表示当前的屏幕状态，全屏还是非全屏
      this.isFullScreen = screenfull.isFullscreen
    })
  },
  methods: {
    // 根据全屏状态执行操作
    // toggleScreen() {
    //   // 如果是全屏。退出
    //   if (this.isFullScreen) {
    //     document.exitFullscreen()
    //   } else {
    //     // 不是全屏，进入全屏
    //     document.documentElement.requestFullscreen()
    //   }
    //   // 对全屏状态进行取反，为了下一次操作
    //   this.isFullScreen = !this.isFullScreen
    // }

    // 使用插件方法
    toggleScreen() {
      if (screenfull.isEnabled) {
        screenfull.toggle()
      }
    }
  }
}
</script>

<style lang="scss" scoped>
.screenWrapper {
  display: flex;
  align-items: center;
  margin-right: 20px;
}
.fullscreen {
  width: 20px;
  height: 20px;
  color: #fff;
  cursor: pointer;
}
</style>
